package fileupload;

import java.io.*;
import java.net.Socket;

public class Client {

    public static void main(String[] args) throws IOException {
        // 要读取的文件名
        String fileName = "upload.png";

        // 步骤1：创建一个BufferedInputStream对象，用于读取本地文件内容
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(fileName));

        // 步骤2：创建对象，开始发数据
        Socket socket = new Socket("127.0.0.1", 8888);
        OutputStream os = socket.getOutputStream();
        byte[] bytes = new byte[1024];
        while (bis.read(bytes) > 0) {

            // 步骤3：将读取到的文件内容，通过write方法发送给服务端
            os.write(bytes);
        }

        // 步骤4：执行shutdownOutput告诉服务端，文件已传完
        // 注意：这里不能直接close，否则就完全断开了，收不到服务端给的回信
        socket.shutdownOutput();

        // 步骤5：接收回信
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }

        // 步骤6：关闭流
        br.close();
        os.close();
        socket.close();
        bis.close();
    }
}
